package com.leetcode.LC;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class LC501 {
    Map<Integer, Integer> map = new HashMap<>();

    public int[] findMode(TreeNode root) {
        if (root==null){
            return new int[]{};
        }
        qinaxuDigui(root);
        int max = 0;
        ArrayList<Integer> list = new ArrayList<>();
        for (Integer value : map.values()) {
            if (value > max) {
                max = value;
            }
        }
        for (Integer integer : map.keySet()) {
            if (map.get(integer) == max) {
                list.add(integer);
            }
        }
        int[] d = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            d[i] = list.get(i);
        }

        return d;


    }

    // 用递归的方法进行先序遍历
    public void qinaxuDigui(TreeNode treeNode) {
        if (map.containsKey(treeNode.val)) {
            map.put(treeNode.val, map.get(treeNode.val) + 1);
        } else {
            map.put(treeNode.val, 1);
        }
        if (treeNode.left != null) {
            qinaxuDigui(treeNode.left);
        }
        if (treeNode.right != null) {
            qinaxuDigui(treeNode.right);
        }
    }

}
